#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include "cgic.h"
#include <unistd.h>
#include <head.h>
#include <sys/ioctl.h>


int cgiMain()
{
    char *led_n[3] = {"led1", "led2", "led3"};
    char led_s[3] = {0};
    int led_fd, i;
    printf("%s:%s:%d\n", __FILE__, __func__, __LINE__);
    // 1.从网页上解析处理来自led的值
    for (i = 0; i < 3; i++)
    {
        cgiFormString(led_n[i], &led_s[i], 2);
        // led_s[i] -= 48; // 将字符串转换成数字
        led_s[i] = atoi(&led_s[i]);
    }
    printf("%s:%s:%d\n", __FILE__, __func__, __LINE__);
    // 2.根据这个led点值来操作驱动
    led_fd = open("/dev/myled", O_RDWR);
    if (led_fd < 0)
    {
        /*
            fprintf() 函数的工作方式类似于 printf() 函数，
            但是它将输出结果写入到指定的文件中，而不是标准输出（终端）。
            所以如果你想将输出结果写入到文件中，就必须使用 fprintf() 函数。
        */
        fprintf(cgiOut, "open /dev/led error\n");
        return -1;
    }
    printf("%s:%s:%d\n", __FILE__, __func__, __LINE__);
    // 将led点值写入驱动 eg：011
    write(led_fd, led_s, sizeof(led_s));
    printf("%s:%s:%d\n", __FILE__, __func__, __LINE__);
    close(led_fd);
    // 3.返回网页，操作灯的状态
    cgiHeaderContentType("text/html;charset=\"UTF-8\"");
    fprintf(cgiOut, "<HTML><HEAD></HEAD>\n");
    fprintf(cgiOut, "<TITLE>LED SET</TITLE>\n");
    fprintf(cgiOut, "<BODY><H1>LED灯设置成功</H1>\n");
    // fprintf(cgiOut, "<p>LED_ON: %s,LED_OFF: %s</p>\n", LED_ON, LED_OFF);
    fprintf(cgiOut, "<p>LED1: %d,LED2: %d,LED3: %d</p>\n", led_s[0], led_s[1], led_s[2]);
    // 返回首页
    fprintf(cgiOut, "<p><a href=\"index.html\">返回首页</a></p>\n");
    fprintf(cgiOut, "</BODY></HTML>\n");

    return 0;
}
